Pressidian
花园入口
笔记
项目
关于
实验室
GitHub
花园入口
笔记
项目
关于
实验室
GitHub

KNOWLEDGE PATHS

笔记库
当前位置
笔记库/前端/三件套/JS/廖雪峰教程/8错误处理

8.1 错误传播

1 分钟阅读 · Note

目录树 578 篇

              • 8.0 简介
              • 8.1 错误传播
              • 8.2 异步处理
          • 前端模块化
      • 前端技术栈
    • 笔记目录
    • CLAUDE.md
    • Vue 组件与 Render 函数

关联笔记 6

↗8.0 简介同一路径↗8.2 异步处理同一路径↗2.1 JS历史共同主题↗3.1 基本语法共同主题↗3.2 数据类型与变量共同主题↗3.3 字符串共同主题
  • 8.1 错误传播

8.1 错误传播

如果代码发生了错误,又没有被try ... catch捕获,那么,程序执行流程会跳转到哪呢?

function getLength(s) {
    return s.length;
}

function printLength() {
    console.log(getLength('abc')); // 3
    console.log(getLength(null)); // Error!
}

printLength();

如果在一个函数内部发生了错误,它自身没有捕获,错误就会被抛到外层调用函数,如果外层函数也没有捕获,该错误会一直沿着函数调用链向上抛出,直到被JavaScript引擎捕获,代码终止执行。

所以,我们不必在每一个函数内部捕获错误,只需要在合适的地方来个统一捕获,一网打尽

当bar()函数传入参数null时,代码会报错,错误会向上抛给调用方foo()函数,foo()函数没有try ... catch语句,所以错误继续向上抛给调用方main()函数,main()函数有try ... catch语句,所以错误最终在main()函数被处理了。

至于在哪些地方捕获错误比较合适,需要视情况而定。